#include <iostream>
#include <signal.h>
#include "CryptoUtil.h"
#include "CloudiskServer.h"
#include "User.h"
#include "OssManage.h"

#include <fcntl.h>
#include <string>
#include <fstream>

using namespace std;

// 信号量：用于异步等待任务完成
static WFFacilities::WaitGroup g_waitGroup{1};

void sig_handler(int signum)
{
    g_waitGroup.done();
}

int main()
{
    // 注册信号处理函数
    signal(SIGINT, sig_handler);

    // 先创建cloudiskserver对象
    CloudiskServer server;

    // 注册路由模块
    server.register_modules();

    // 启用服务器，并启用归总，监听端口
    if (server.track().start(8888) == 0)
    {
        server.list_routes();
        g_waitGroup.wait();
        // 销毁OssManageer
        OssManage::destroy_instance();
        server.stop();
    }
    else
    {
        cerr << "Server start failed" << endl;
        exit(1);
    }
}
